Notions are (sometimes) used before defined
means of communication

- Graph
	* data-graph 
	* references to data/code

- Type storage
	* .tcl, type definitions for each .icl-module
	* .typ, concatenation of *.tcl for a complete application aka type-table

- Library
	* type, an .typ-file
	* code, an *unlinked* application i.e. containing symbolic references

- Dynamic
	* identity: 
		- at run-time, a dynamic run-time system index
		- otherwise a path to rhe encoded dynamic
  	* graph to be encoded is divided into partitions aka blocks 
	* division by value and type of (nested) dynamics
	* unit of laziness: block, identified by its unique index in a dynamic
	* normal order of laziness: first dynamic-constructor, then type and finally value.
	* run-time representation: (value,type)-pair, otherwise encoded dynamic
          and at least one library

	
- Internal/external type
	* dynamic (size {i  \\ i <- [1..100]}) :: Int
	* external type, denoted after defines-token e.g. Int
	* internal type, type of each subexpression e.g. size :: {a} -> Int | Array {#} a, etc.

- Data/Lazy dynamic
	* data, conditions:
		- graph in hyper strict nf
		- no arrow types i.e. functions
		- abstract/existential typed graph are not permitted
          external type == internal type, no code library needed
        * lazy, otherwise

- Nested dynamics
	* dynamic containing one or more dynamics
	 
- Internal/external dynamic
	* internal dynamic, type-component identifies *the* type-table solely by
	  ModuleIds, references to data/code in value-component remain within a
	  single library.
	* external dynamic, otherwise
	
- Type checking is divided into:
	* unification, StdDynamic
	* type definition check, Dynamic run-time system

- Type definition equivalence
  Two type definitions must syntaxically agree. Modulo
	* alpha conversion of type constructor variables
	* order of constructors is insignificant

- Type identification at run-time
	* type name
	* defining module name
	* library identification
		- ModuleID at run-time
		  Initially used, before conversion to a string
		- RunTimeID at run-time
		  Run-time index identifying type-table
		- RunTimeID after conversion i.e. DiskID
		  Converted run-time index identifying type table after
		  a dynamic has been converted to its string representation
	* promotion-rules of library identification:
		ModuleID -> DiskId,	internal dynamic
                DiskID <-> RunTimeID,	external dynamic
       
- Dynamic patterns
	* type variables are means of communication among dynamics		  
			
- (un)Visible dynamic
	* a dynamic d is visible w.r.t. a library iff the library issued a load
	  dynamic d command e.g. by using readDynamic
